import {
	customRef
} from "vue"

/**
 * 使用 customRef实现ref防抖
 * value  需要ref的值
 * duration  防抖时间
 */
export const useDebounceRef = (value, duration) => {
	let timer;
	return customRef((track, trigger) => {
		return {
			get() {
				// 依赖收集
				track();
				return value;
			},
			set(val) {
				clearTimeout(timer)
				timer = setTimeout(() => {
					// 派发更新
					trigger();
					value = val;
				}, duration)
			}
		}
	})
}